using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace TestImport
{
    public partial class BoekenBeheren : TestImport.SuperDataView

    {
        private String filterTekstSoort;
        private bool isnew;
        private bool isPlatoBoek;

        public BoekenBeheren()
        {
            InitializeComponent();
            this.BackColor = InstParameters.Default.schermkleur;
            filterTekstSoort = "Alle artikelen";
            this.gbFilter.Text = filterTekstSoort;
            this.cmbStatusZoek.SelectedText = "boekStatusNaam";
        }

        private void boekBindingNavigatorSaveItem_Click(object sender, EventArgs e)
        {
            this.Validate();
            this.boekBindingSource.EndEdit();
            this.boekTableAdapter.Update(this.onsBoekenPakketDataSet.Boek);

        }

        private void BoekenBeheren_Load(object sender, EventArgs e)
        {
            // TODO: This line of code loads data into the 'onsBoekenPakketDataSet.BoekStatus' table. You can move, or remove it, as needed.
            this.boekStatusTableAdapter.Fill(this.onsBoekenPakketDataSet.BoekStatus);
            // TODO: This line of code loads data into the 'onsBoekenPakketDataSet.Uitgever' table. You can move, or remove it, as needed.
            this.uitgeverTableAdapter.Fill(this.onsBoekenPakketDataSet.Uitgever);
            // TODO: This line of code loads data into the 'onsBoekenPakketDataSet.Categorie' table. You can move, or remove it, as needed.
            this.categorieTableAdapter.Fill(this.onsBoekenPakketDataSet.Categorie);
            // TODO: This line of code loads data into the 'onsBoekenPakketDataSet.Boek' table. You can move, or remove it, as needed.
            this.boekTableAdapter.Fill(this.onsBoekenPakketDataSet.Boek);
            this.WindowState = FormWindowState.Maximized;

        }

        private void boekDataGridView_SelectionChanged(object sender, EventArgs e)
        {
            if (this.boekDataGridView.CurrentRow != null)
            {
               this.cmbUitgever.SelectedValue = this.boekDataGridView.CurrentRow.Cells["dataGridViewUitgever"].Value;
               this.cmbCategorie.SelectedValue = this.boekDataGridView.CurrentRow.Cells["dataGridViewCategorie"].Value;
               this.cmbBoekStatus.SelectedValue = this.boekDataGridView.CurrentRow.Cells["dataGridViewBoekStatusCode"].Value;
               this.lblSchoolPrijsWinst.Text = "(Winst % schoolprijs: " + BerekenSchoolPrijsWinst().ToString() + ")";
               this.lblHuurPrijsPercent.Text = "(Huurprijs " + BerekenHuurPrijsPercent().ToString() + "% van aankoopprijs)";
               // formateer aankoopprijs (2 cijfers na komma)
               Binding bind, bind2, bind3;
               bind = this.txtAankoopprijs.DataBindings["Text"];
               bind.FormatString = "N2";
               bind.FormattingEnabled = true;
               bind2 = this.txtSchoolprijs.DataBindings["Text"];
               bind2.FormatString = "N2";
               bind2.FormattingEnabled = true;
               bind3 = this.txtHuurprijs.DataBindings["Text"];
               bind3.FormatString = "N2";
               bind3.FormattingEnabled = true;
               isPlatoBoek = this.boekDataGridView.CurrentRow.Cells["dataGridViewAboek"].Value.ToString().Equals("True");
               chkHuurboek.Checked = this.boekDataGridView.CurrentRow.Cells["dataGridViewHuurboek"].Value.ToString().Equals("True");
            }
        }

        private void cmbCategorieZoek_SelectedIndexChanged(object sender, EventArgs e)
        {
            String zoek = cmbCategorieZoek.SelectedValue.ToString();
            String filterTekst = "CategorieCode = " + "'" + zoek + "'";
            if (rbtPlato.Checked)
                filterTekst = "CategorieCode = " + "'" + zoek + "'" +" AND ABoek = true";
            if (rbtSchool.Checked)
                filterTekst = "CategorieCode = " + "'" + zoek + "'" +" AND ABoek = false";
            this.boekBindingSource.Filter = filterTekst;
            String text = ((DataRowView)cmbCategorieZoek.SelectedItem).Row["categorieOmschrijving"].ToString(); ;
            this.gbFilter.Text = filterTekstSoort + " /Categorie " + text.ToUpper();
        }

        private void txtBegin_TextChanged(object sender, EventArgs e)
        {
            String text = txtBegin.Text.Replace("\'", "\'\'");
            String filterTekst = "Titel like \'%" + (text + "%\'");
            if (rbtPlato.Checked)
                filterTekst = "Titel like \'%" + (text + "%\' AND ABoek = true");
            if (rbtSchool.Checked)
                filterTekst = "Titel like \'%" + (text + "%\' AND ABoek = false");
            this.boekBindingSource.Filter = filterTekst;
            this.gbFilter.Text = filterTekstSoort + " /Deel van titel " + text.ToUpper();
        }

        private void rbtSchool_CheckedChanged(object sender, EventArgs e)
        {
            this.boekBindingSource.Filter = ("ABoek = false");
            filterTekstSoort = "Eigen school artikelen";
            this.gbFilter.Text = filterTekstSoort;
        }

        private void rbtPlato_CheckedChanged(object sender, EventArgs e)
        {
            this.boekBindingSource.Filter = ("ABoek = true");
            filterTekstSoort = "Plato artikelen";
            this.gbFilter.Text = filterTekstSoort;
        }

        private void rbtAlle_CheckedChanged(object sender, EventArgs e)
        {
            this.boekBindingSource.RemoveFilter();
            filterTekstSoort = "Alle artikelen";
            this.gbFilter.Text = filterTekstSoort;
        }

        private void cmbUitgeverZoek_SelectedIndexChanged(object sender, EventArgs e)
        {
            String zoek = cmbUitgeverZoek.SelectedValue.ToString();
            String filterTekst = "UitgeverCode = " + "'" + zoek + "'";
            if (rbtPlato.Checked)
                filterTekst = "UitgeverCode = " + "'" + zoek + "'" + " AND ABoek = true";
            if (rbtSchool.Checked)
                filterTekst = "UitgeverCode = " + "'" + zoek + "'" + " AND ABoek = false";
            this.boekBindingSource.Filter = filterTekst;
            String text = ((DataRowView)cmbUitgeverZoek.SelectedItem).Row["uitgeverNaam"].ToString(); ;
            this.gbFilter.Text = filterTekstSoort + " /Uitgever " + text.ToUpper();

        }

        private void cmbStatusZoek_SelectedIndexChanged(object sender, EventArgs e)
        {
            String zoek = cmbStatusZoek.SelectedValue.ToString();
            String filterTekst = "BoekstatusCode = " + "'" + zoek + "'";
            if (rbtPlato.Checked)
                filterTekst = "BoekstatusCode = " + "'" + zoek + "'" + " AND ABoek = true";
            if (rbtSchool.Checked)
                filterTekst = "BoekstatusCode = " + "'" + zoek + "'" + " AND ABoek = false";
            this.boekBindingSource.Filter = filterTekst;
            String text = ((DataRowView)cmbStatusZoek.SelectedItem).Row["boekStatusNaam"].ToString(); ;
            this.gbFilter.Text = filterTekstSoort + " /Boekstatus " + text.ToUpper();
        }

        private void txtSchoolprijs_Leave(object sender, EventArgs e)
        {
            this.lblSchoolPrijsWinst.Text = "(Winst % schoolprijs: "+BerekenSchoolPrijsWinst().ToString()+")";
        }

        private double BerekenSchoolPrijsWinst()
        {
            double winst = 0.0;
            double hAankoop = 0.0;
            Double.TryParse(this.txtAankoopprijs.Text, out hAankoop);
            double hVerkoop = 0.0;
            Double.TryParse(this.txtSchoolprijs.Text,out hVerkoop);
            if (hVerkoop != 0)
                return Math.Round((hVerkoop - hAankoop) / hAankoop * 100, 2);
            return winst;
        }

        private void switchButtonModus()
        {
            Nieuw.Enabled = !Nieuw.Enabled;
            Wijzig.Enabled = !Wijzig.Enabled;
            Wis.Enabled = !Wis.Enabled;
            Registreer.Enabled = !Registreer.Enabled;
            RegistreerEnNieuw.Enabled = !RegistreerEnNieuw.Enabled;
            Annuleer.Enabled = !Annuleer.Enabled;
            this.boekDataGridView.Enabled = !this.boekDataGridView.Enabled;
        }

        private void switchEnabledModus()
        {
            if (!isPlatoBoek)
            {
                txtTitel.ReadOnly = !txtTitel.ReadOnly;
                txtIsbnNr.ReadOnly = !txtIsbnNr.ReadOnly;
                cmbUitgever.Enabled = !cmbUitgever.Enabled;
            }    
            txtSchoolprijs.ReadOnly = !txtSchoolprijs.ReadOnly;
            txtAankoopprijs.ReadOnly = !txtAankoopprijs.ReadOnly;
            txtHuurprijs.ReadOnly = !txtHuurprijs.ReadOnly;
            txtOpmerking.ReadOnly = !txtOpmerking.ReadOnly;
            cmbCategorie.Enabled = !cmbCategorie.Enabled;
            cmbBoekStatus.Enabled = !cmbBoekStatus.Enabled;
            chkHuurboek.Enabled = !chkHuurboek.Enabled;
            
        }

        private void Wijzig_Click(object sender, EventArgs e)
        {
            this.switchEnabledModus();
            this.switchButtonModus();
            isnew = false;
        }

        private void Annuleer_Click(object sender, EventArgs e)
        {
            if (isnew)
            {
                this.boekBindingSource.RemoveCurrent();
            }
            else
            {
                this.boekBindingSource.CancelEdit();
            }
            errorProvider1.Clear();
            this.switchEnabledModus();
            this.switchButtonModus();
        }

        private void Registreer_Click(object sender, EventArgs e)
        {
            DialogResult result = DialogResult.No;
            if (isnew)
                result = MessageBox.Show("Nieuw school artikel (NIET PLATO BOEK) registreren?", "Registreren nieuw artikel/boek?", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
            else
                result = MessageBox.Show("Artikel/Boek gegevens wijzigen?", "Registreren gewijzigde artiekl/boek?", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
            if (result == DialogResult.Yes)
            {
                if (IsValide())
                {
                    this.boekDataGridView.CurrentRow.Cells["dataGridViewUitgever"].Value = this.cmbUitgever.SelectedValue;
                    this.boekDataGridView.CurrentRow.Cells["dataGridViewCategorie"].Value = this.cmbCategorie.SelectedValue ;
                    this.boekDataGridView.CurrentRow.Cells["dataGridViewBoekStatusCode"].Value = this.cmbBoekStatus.SelectedValue;
                    this.boekDataGridView.CurrentRow.Cells["dataGridViewHuurboek"].Value = this.chkHuurboek.Checked;
                    this.boekDataGridView.CurrentRow.Cells["dataGridViewAboek"].Value = false;
                    this.boekBindingSource.EndEdit();
                    this.boekTableAdapter.Update(this.onsBoekenPakketDataSet.Boek);
                    this.switchEnabledModus();
                    this.switchButtonModus();
                    this.boekDataGridView.Refresh();
                }
            }
            else
            {
                this.boekBindingSource.CancelEdit();
                this.switchEnabledModus();
                this.switchButtonModus();
            }
        }

        public Boolean IsValide()
        {
            bool res = txtTitel.Text.Length > 0;
            if (!res)
            {
                this.errorProvider1.SetError(this.txtTitel, "Titel mag niet leeg zijn!!!");
                //terug = res;
            }
            else
            {
                this.errorProvider1.SetError(this.txtTitel, "");
                //terug = res;
            }
            return res;
        }

        private void Nieuw_Click(object sender, EventArgs e)
        {
            isPlatoBoek = false;
            this.switchEnabledModus();
            this.switchButtonModus();
            this.boekBindingSource.AddNew();
            cmbUitgever.SelectedIndex = 0;
            cmbBoekStatus.SelectedIndex = 1;
            cmbCategorie.SelectedIndex = 0;
            txtTitel.Focus();
            isnew = true;
        }

        private void RegistreerEnNieuw_Click(object sender, EventArgs e)
        {
            this.Registreer_Click(sender, e);
            if (IsValide())
                this.Nieuw_Click(sender, e);
        }

        private void txtAankoopprijs_Leave(object sender, EventArgs e)
        {
            this.lblSchoolPrijsWinst.Text = "(Winst % schoolprijs: " + BerekenSchoolPrijsWinst().ToString() + ")";
            this.lblHuurPrijsPercent.Text = "(Huurprijs " + BerekenHuurPrijsPercent().ToString()+ "% van aankoopprijs)";
        }

        private double BerekenHuurPrijsPercent()
        {
            double percent = 0.0;
            double hAankoop = 0.0;
            Double.TryParse(this.txtAankoopprijs.Text, out hAankoop);
            double hHuur = 0.0;
            Double.TryParse(this.txtHuurprijs.Text, out hHuur);
            if (hHuur != 0)
                return Math.Round(hHuur / hAankoop * 100, 2);
            return percent;
        }

        private void txtHuurprijs_Leave(object sender, EventArgs e)
        {
            this.lblHuurPrijsPercent.Text = "(Huurprijs " + BerekenHuurPrijsPercent().ToString() + "% van aankoopprijs)";
        }

          
    }
}

